unit ConfiguracoesGlobais;

interface

uses DmGeral, SqlExpr, StrUtils;

type

  TTipoBanco = (tbCorreios, tbCaixa);

  TConfigPadrao = class
  private
    FModulo : string;
  public
    procedure SalvarPropriedade(chave: string; valor :boolean);overload;
    procedure SalvarPropriedade(chave,valor : string);overload;
    procedure CriarTabelaParametros;
    function ParametroInteiro(parametro, modulo : string) : integer;
    function ParametroFloat(parametro, modulo  : string) : double;
    function ParametroString(parametro, modulo : string) : string;
    function ParametroBoleano(parametro,modulo : string) : boolean;
//    function ParametroMemo(parametro, modulo   : string) : string;
    function ParametroChar(parametro, modulo: string): char;
    procedure SetParametroChar(parametro, modulo : string; valor : char);
    procedure SetParametroInteiro(parametro, modulo : string; valor : integer);
    procedure SetParametroFloat(parametro, modulo  : string; valor : double);
    procedure SetParametroString(parametro, modulo : string; valor : string);
    procedure SetParametroBoleano(parametro, modulo: string; valor :boolean);

    property Modulo : string read FModulo write FModulo;
  end;

  TConfigDadosBancarios = class(TConfigPadrao)
  private
    function GetAgencia: string;
    function GetBanco: TTipoBanco;
    function GetCarteira: string;
    function GetCodigoCliente: string;
    function GetConta: string;
    function GetEndereco1: string;
    function GetEndereco2: string;
    function GetMoeda: Smallint;
    procedure SetAgencia(const Value: string);
    procedure SetBanco(const Value: TTipoBanco);
    procedure SetCarteira(const Value: string);
    procedure SetCodigoCliente(const Value: string);
    procedure SetConta(const Value: string);
    procedure SetEndereco1(const Value: string);
    procedure SetEndereco2(const Value: string);
    procedure SetMoeda(const Value: Smallint);
  public

    property Banco    	    : TTipoBanco read GetBanco write SetBanco;
    property Moeda    	    : Smallint read GetMoeda write SetMoeda;
    property Agencia  	    : string read GetAgencia write SetAgencia;
    property Carteira 	    : string read GetCarteira write SetCarteira;
    property Conta   	      : string read GetConta write SetConta;
    property CodigoCliente  : string read GetCodigoCliente write SetCodigoCliente;
    property Endereco1      : string read GetEndereco1 write SetEndereco1;
    property Endereco2      : string read GetEndereco2 write SetEndereco2;

  end;

  TLicenca = class(TConfigPadrao)
  private
    procedure SetBairro(const Value: string);
    procedure SetCEP(const Value: string);
    procedure SetCidade(const Value: string);
    procedure SetCNPJ(const Value: string);
    procedure SetEndereco(const Value: string);
    procedure SetEstado(const Value: string);
    procedure SetFantasia(const Value: string);
    procedure SetInscricao(const Value: string);
    procedure SetRazaoSocial(const Value: string);
    procedure SetTelefone(const Value: string);
    function GetBairro: string;
    function GetCEP: string;
    function GetCidade: string;
    function GetCNPJ: string;
    function GetEstado: string;
    function GetFantasia: string;
    function GetFEndereco: string;
    function GetInscricao: string;
    function GetRazaoSocial: string;
    function GetTelefone: string;
  public
    property RazaoSocial  : string read GetRazaoSocial write SetRazaoSocial;
    property Fantasia     : string read GetFantasia write SetFantasia;
    property CNPJ         : string read GetCNPJ write SetCNPJ;
    property Inscricao    : string read GetInscricao write SetInscricao;
    property Endereco     : string read GetFEndereco write SetEndereco;
    property Bairro       : string read GetBairro write SetBairro;
    property CEP          : string read GetCEP write SetCEP;
    property Estado       : string read GetEstado write SetEstado;
    property Cidade       : string read GetCidade write SetCidade;
    property Telefone     : string read GetTelefone write SetTelefone;
  end;

  TContratos = class(TConfigPadrao)
  private
    procedure SetImg_Contrato(const Value: string);
    procedure SetInfo1_Contrato(const Value: string);
    procedure SetInfo2_Contrato(const Value: string);
    procedure SetTermo_Contrato(const Value: string);
    function GetImg_Contrato: string;
    function GetInfo1_Contrato: string;
    function GetInfo2_Contrato: string;
    function GetTermo_Contrato: string;
  public
    property Img_Contrato   : string read GetImg_Contrato write SetImg_Contrato;
    property Info1_Contrato : string read GetInfo1_Contrato write SetInfo1_Contrato;
    property Info2_Contrato : string read GetInfo2_Contrato write SetInfo2_Contrato;
    property Termo_Contrato : string read GetTermo_Contrato write SetTermo_Contrato;
  end;

  TEtiquetas = class(TConfigPadrao)
  private
    procedure SetCabecEtqProduto(const Value: string);
    procedure SetInfoEtqProduto(const Value: string);
    function GetCabecEtqProduto: string;
    function GetInfoEtqProduto: string;
  public
    property CabecEtqProduto : string read GetCabecEtqProduto write SetCabecEtqProduto;
    property InfoEtqProduto  : string read GetInfoEtqProduto write SetInfoEtqProduto;
  end;

  TOrdemServico = class(TConfigPadrao)
  private
    procedure SetCondicoes(const Value: string);
    procedure SetGarantia(const Value: string);
    procedure SetDiasGarantia(const Value: Smallint);
    procedure SetNumeroInicial(const Value: Integer);
    function GetCondicoes: string;
    function GetGarantia: string;
    function GetDiasGarantia: Smallint;
    function GetNumeroInicial: Integer;
  public
    property Condicoes: string read GetCondicoes write SetCondicoes;
    property Garantia: string read GetGarantia write SetGarantia;
    property DiasGarantia: Smallint read GetDiasGarantia write SetDiasGarantia;
    property NumeroInicial: Integer read GetNumeroInicial write SetNumeroInicial;
  end;

  TConfiguracoesGlobais = class(TConfigPadrao)
  private
    FDadosBancarios       : TConfigDadosBancarios;
    FLicenca              : TLicenca;
    FContratos            : TContratos;
    FEtiquetas            : TEtiquetas;
    FOrdemServico         : TOrdemServico;
    procedure SetLicenca(const Value: TLicenca);
    procedure SetContratos(const Value: TContratos);
    procedure SetEtiquetas(const Value: TEtiquetas);
    procedure SetOrdemServico(const Value: TOrdemServico);
    function GetContaPadrao: string;
    function GetControlePorEdicao: boolean;
    function GetControlePorGrade: boolean;
    function GetControlePorSerial: boolean;
    function GetControleNCM: boolean;
    function GetPastaImagens: string;
    function GetDadosBancarios: TConfigDadosBancarios;
    function GetFVersaoBanco: string;
    function GetJurosMensal: Real;
    function GetTolerancia: integer;
    function GetDecimaisNoPreco: integer;
    function GetLicenca: TLicenca;
    function GetContratos: TContratos;
    function GetEtiquetas: TEtiquetas;
    function GetCaixaBanco: char;
    function GetOrdemServico: TOrdemServico;
    function GetSubContaPadrao: string;
    function GetTNEntrega: boolean;
    function GetTNOficina: boolean;
    function GetTNPlanoAssistencia: boolean;
    function GetTNPrestadoraServico: boolean;
    function GetTNRestaurante: boolean;
    function GetTNTransportadora: boolean;
    procedure SetContaPadrao(const Value: string);
    procedure SetControlePorEdicao(const Value: boolean);
    procedure SetControlePorGrade(const Value: boolean);
    procedure SetControlePorSerial(const Value: boolean);
    procedure SetControleNCM(const Value: boolean);
    procedure SetPastaImagens(const Value: string);
    procedure SetDadosBancarios(const Value: TConfigDadosBancarios);
    procedure SetJurosMensal(const Value: Real);
    procedure SetTolerancia(const Value: integer);
    procedure SetDecimaisNoPreco(const Value: integer);
    procedure SetCaixaBanco(const Value: char);
    procedure SetSubContaPadrao(const Value: string);
    procedure SetTNEntrega(const Value: boolean);
    procedure SetTNOficina(const Value: boolean);
    procedure SetTNPlanoAssistencia(const Value: boolean);
    procedure SetTNPrestadoraServico(const Value: boolean);
    procedure SetTNRestaurante(const Value: boolean);
    procedure SetTNTransportadora(const Value: boolean);
    procedure SetVersaoBanco(const Value: string);
    function GetGerarNumeroAutomatico: char;
    procedure SetGerarNumeroAutomatico(const Value: char);
  public
    property VersaoBanco          : string  read GetFVersaoBanco        write SetVersaoBanco;
    property ControlePorSerial    : boolean read GetControlePorSerial   write SetControlePorSerial;
    property ControlePorGrade     : boolean read GetControlePorGrade    write SetControlePorGrade;
    property ControlePorEdicao    : boolean read GetControlePorEdicao   write SetControlePorEdicao;
    property ControleNCM          : boolean read GetControleNCM         write SetControleNCM;
    property PastaImagens         : string  read GetPastaImagens        write SetPastaImagens;
    property TNRestaurante        : boolean read GetTNRestaurante       write SetTNRestaurante;
    property TNEntrega            : boolean read GetTNEntrega           write SetTNEntrega;
    property TNTransportadora     : boolean read GetTNTransportadora    write SetTNTransportadora;
    property TNPrestadoraServico  : boolean read GetTNPrestadoraServico write SetTNPrestadoraServico;
    property TNOficina            : boolean read GetTNOficina           write SetTNOficina;
    property TNPlanoAssistencia   : boolean read GetTNPlanoAssistencia  write SetTNPlanoAssistencia;
    property GerarCodigoAutomatico: char    read GetGerarNumeroAutomatico write SetGerarNumeroAutomatico;
    property ContaPadrao          : string  read GetContaPadrao         write SetContaPadrao;
    property CaixaBanco           : char    read GetCaixaBanco           write SetCaixaBanco;
    property SubContaPadrao       : string  read GetSubContaPadrao      write SetSubContaPadrao;
    property JurosMensal          : Real    read GetJurosMensal         write SetJurosMensal;
    property Tolerancia           : integer read GetTolerancia          write SetTolerancia;
    property DecimaisNoPreco      : integer read GetDecimaisNoPreco     write SetDecimaisNoPreco;

    property DadosBancarios       : TConfigDadosBancarios read GetDadosBancarios write SetDadosBancarios;
    property Licenca              : TLicenca read GetLicenca write SetLicenca;
    property Contratos            : TContratos read GetContratos write SetContratos;
    property Etiquetas            : TEtiquetas read GetEtiquetas write SetEtiquetas;
    property OrdemServico         : TOrdemServico read GetOrdemServico write SetOrdemServico;
    constructor Create(modulo : string);
  end;

implementation

uses ConfiguracoesGlobaisDB, SysUtils, DB;

{ TConfiguracoesGlobais }

constructor TConfiguracoesGlobais.Create(modulo : string);
begin
  Self.Modulo := modulo;
  FDadosBancarios        := TConfigDadosBancarios.Create;
  FDadosBancarios.Modulo := modulo;
  FLicenca               := TLicenca.Create;
  FLicenca.Modulo        := modulo;
  FContratos             := TContratos.Create;
  FContratos.Modulo      := modulo;
  FEtiquetas             := TEtiquetas.Create;
  FEtiquetas.Modulo      := modulo;
  FOrdemServico          := TOrdemServico.Create;
  FOrdemServico.Modulo   := modulo;
//  Carregar(modulo);
end;

function TConfiguracoesGlobais.GetContaPadrao: string;
begin
  Result := ParametroString('Cheque_Conta',Modulo);
end;

function TConfiguracoesGlobais.GetControlePorEdicao: boolean;
begin
  Result := ParametroBoleano('Cheque_Subconta',Modulo);
end;

function TConfiguracoesGlobais.GetControlePorGrade: boolean;
begin
  Result := ParametroString('PorGrade',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetControlePorSerial: boolean;
begin
  Result := ParametroString('PorSerial',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetControleNCM: boolean;
begin
  Result := ParametroString('NCM',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetPastaImagens: string;
begin
  Result := ParametroString('PastaImagens',Modulo);
end;

function TConfiguracoesGlobais.GetDadosBancarios: TConfigDadosBancarios;
begin
  Result := FDadosBancarios;
end;

function TConfiguracoesGlobais.GetFVersaoBanco: string;
begin
  Result := ParametroString('VersaoBanco',Modulo);
end;

function TConfiguracoesGlobais.GetJurosMensal: Real;
begin
  Result := ParametroFloat('Juros_Mensal',Modulo);
end;

function TConfiguracoesGlobais.GetTolerancia: integer;
begin
  Result := ParametroInteiro('Juros_Toleranci',Modulo);
end;

function TConfiguracoesGlobais.GetDecimaisNoPreco: integer;
begin
  Result := ParametroInteiro('DecimaisNoPreco',Modulo);
end;

function TConfiguracoesGlobais.GetLicenca: TLicenca;
begin
  Result := FLicenca;
end;

function TConfiguracoesGlobais.GetContratos: TContratos;
begin
  Result := FContratos;
end;

function TConfiguracoesGlobais.GetEtiquetas: TEtiquetas;
begin
  Result := FEtiquetas;
end;

function TConfiguracoesGlobais.GetOrdemServico: TOrdemServico;
begin
  Result := FOrdemServico;
end;

function TConfiguracoesGlobais.GetSubContaPadrao: string;
begin
  Result := ParametroString('Cheque_Subcontas',Modulo);
end;

function TConfiguracoesGlobais.GetCaixaBanco: char;
begin
  Result := ParametroChar('Rec_CaixaBanco',Modulo);
end;

function TConfiguracoesGlobais.GetTNEntrega: boolean;
begin
  Result := ParametroBoleano('Entrega',Modulo);
end;

function TConfiguracoesGlobais.GetTNOficina: boolean;
begin
  Result := ParametroString('Oficina',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetTNPlanoAssistencia: boolean;
begin
  Result := ParametroString('PlanoAssis',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetTNPrestadoraServico: boolean;
begin
  Result := ParametroString('PresServico',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetTNRestaurante: boolean;
begin
  Result := ParametroString('Restaurante',Modulo) = 'S';
end;

function TConfiguracoesGlobais.GetTNTransportadora: boolean;
begin
  Result := ParametroString('Transportadora',Modulo) = 'S';
end;

procedure TConfiguracoesGlobais.SetContaPadrao(const Value: string);
begin
  SetParametroString('Cheque_Conta',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetControlePorEdicao(const Value: boolean);
begin
  SetParametroBoleano('PorEdicao',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetControlePorGrade(const Value: boolean);
begin
  SetParametroBoleano('PorGrade',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetControlePorSerial(const Value: boolean);
begin
  SetParametroBoleano('PorSerial',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetControleNCM(const Value: boolean);
begin
  SetParametroBoleano('NCM',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetPastaImagens(const Value: string);
begin
  SetParametroString('PastaImagens',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetDadosBancarios(
  const Value: TConfigDadosBancarios);
begin
  FDadosBancarios := Value;
end;

procedure TConfiguracoesGlobais.SetJurosMensal(const Value: Real);
begin
  SetParametroFloat('Juros_Mensal',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTolerancia(const Value: integer);
begin
  SetParametroInteiro('Juros_Toleranci',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetDecimaisNoPreco(const Value: integer);
begin
  SetParametroInteiro('DecimaisNoPreco',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetLicenca(const Value: TLicenca);
begin
  FLicenca := Value;
end;

procedure TConfiguracoesGlobais.SetContratos(const Value: TContratos);
begin
  FContratos := Value;
end;

procedure TConfiguracoesGlobais.SetEtiquetas(const Value: TEtiquetas);
begin
  FEtiquetas := Value;
end;

procedure TConfiguracoesGlobais.SetOrdemServico(const Value: TOrdemServico);
begin
  FOrdemServico := Value;
end;

procedure TConfiguracoesGlobais.SetSubContaPadrao(const Value: string);
begin
  SetParametroString('Cheque_Subconta',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetCaixaBanco(const Value: char);
begin
  SetParametroChar('Rec_CaixaBanco',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNEntrega(const Value: boolean);
begin
  SetParametroBoleano('Entrega',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNOficina(const Value: boolean);
begin
  SetParametroBoleano('Oficina',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNPlanoAssistencia(
  const Value: boolean);
begin
  SetParametroBoleano('PlanoAssis',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNPrestadoraServico(
  const Value: boolean);
begin
  SetParametroBoleano('PresServico',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNRestaurante(const Value: boolean);
begin
  SetParametroBoleano('Restaurante',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetTNTransportadora(const Value: boolean);
begin
  SetParametroBoleano('Transportadora',Modulo,Value);
end;

procedure TConfiguracoesGlobais.SetVersaoBanco(const Value: string);
begin
  SetParametroString('VersaoBanco',Modulo,Value);
end;

function TConfiguracoesGlobais.GetGerarNumeroAutomatico: char;
begin
  result := ParametroChar('ProdutoGeraCod',Modulo);
end;

procedure TConfiguracoesGlobais.SetGerarNumeroAutomatico(
  const Value: char);
begin
  SetParametroChar('ProdutoGeraCod',Modulo,Value);
end;

{ TLicenca }

function TLicenca.GetBairro: string;
begin
  Result := ParametroString('Bairro',Modulo);
end;

function TLicenca.GetCEP: string;
begin
  Result := ParametroString('CEP',Modulo);
end;

function TLicenca.GetCidade: string;
begin
  Result := ParametroString('Cidade',Modulo);
end;

function TLicenca.GetCNPJ: string;
begin
  Result := ParametroString('CNPJ',Modulo);
end;

function TLicenca.GetEstado: string;
begin
  Result := ParametroString('Estado',Modulo);
end;

function TLicenca.GetFantasia: string;
begin
  Result := ParametroString('Fantasia',Modulo);
end;

function TLicenca.GetFEndereco: string;
begin
  Result := ParametroString('Endereco',Modulo);
end;

function TLicenca.GetInscricao: string;
begin
  Result := ParametroString('Inscricao',Modulo);
end;

function TLicenca.GetRazaoSocial: string;
begin
  Result := ParametroString('RazaoSocial',Modulo);
end;

function TLicenca.GetTelefone: string;
begin
  Result := ParametroString('Telefone',Modulo);
end;

procedure TLicenca.SetBairro(const Value: string);
begin
  SetParametroString('Bairro',Modulo,Value);
end;

procedure TLicenca.SetCEP(const Value: string);
begin
  SetParametroString('CEP',Modulo,Value);
end;

procedure TLicenca.SetCidade(const Value: string);
begin
 SetParametroString('Cidade',Modulo,Value);
end;

procedure TLicenca.SetCNPJ(const Value: string);
begin
  SetParametroString('CNPJ',Modulo,Value);
end;

procedure TLicenca.SetEndereco(const Value: string);
begin
  SetParametroString('Endereco',Modulo,Value);
end;

procedure TLicenca.SetEstado(const Value: string);
begin
  SetParametroString('Estado',Modulo,Value);
end;

procedure TLicenca.SetFantasia(const Value: string);
begin
  SetParametroString('Fantasia',Modulo,Value);
end;

procedure TLicenca.SetInscricao(const Value: string);
begin
 SetParametroString('Inscricao',Modulo,Value);
end;

procedure TLicenca.SetRazaoSocial(const Value: string);
begin
  SetParametroString('RazaoSocial',Modulo,Value);
end;

procedure TLicenca.SetTelefone(const Value: string);
begin
  SetParametroString('Telefone',Modulo,Value);
end;

{ TConfigDadosBancarios }

function TConfigDadosBancarios.GetAgencia: string;
begin
  Result := ParametroString('Agencia',Modulo);
end;

function TConfigDadosBancarios.GetBanco: TTipoBanco;
begin
  case ParametroInteiro('Banco',Modulo) of
    0 : Result := tbCorreios;
    1 : Result := tbCaixa;
  end;
end;

function TConfigDadosBancarios.GetCarteira: string;
begin
 Result := ParametroString('Carteira',Modulo);
end;

function TConfigDadosBancarios.GetCodigoCliente: string;
begin
  Result := ParametroString('CodCliente',Modulo);
end;

function TConfigDadosBancarios.GetConta: string;
begin
  Result := ParametroString('Conta',Modulo);
end;

function TConfigDadosBancarios.GetEndereco1: string;
begin
  Result := ParametroString('Ender1',Modulo);
end;

function TConfigDadosBancarios.GetEndereco2: string;
begin
  Result := ParametroString('Ender2',Modulo);
end;

function TConfigDadosBancarios.GetMoeda: Smallint;
begin
 Result := ParametroInteiro('Moeda',Modulo);
end;

procedure TConfigDadosBancarios.SetAgencia(const Value: string);
begin
  SetParametroString('Agencia',Modulo,Value);
end;

procedure TConfigDadosBancarios.SetBanco(const Value: TTipoBanco);
begin
  case Value of
    tbCorreios  : SetParametroInteiro('Banco',Modulo,0);
    tbCaixa     : SetParametroInteiro('Banco',Modulo,1);
  end;
end;

procedure TConfigDadosBancarios.SetCarteira(const Value: string);
begin
  SetParametroString('Carteira',Modulo,Value);
end;

procedure TConfigDadosBancarios.SetCodigoCliente(const Value: string);
begin
  SetParametroString('CodCliente',Modulo,Value);
end;

procedure TConfigDadosBancarios.SetConta(const Value: string);
begin
  SetParametroString('Conta',Modulo,Value);
end;

procedure TConfigDadosBancarios.SetEndereco1(const Value: string);
begin
  SetParametroString('Ender1',Modulo,value);
end;

procedure TConfigDadosBancarios.SetEndereco2(const Value: string);
begin
  SetParametroString('Ender2',Modulo,value);
end;

procedure TConfigDadosBancarios.SetMoeda(const Value: Smallint);
begin
   SetParametroInteiro('Moeda',Modulo,value);
end;

{ TContratos }

function TContratos.GetImg_Contrato: string;
begin
  Result := ParametroString('Img_Contrato',Modulo);
end;

function TContratos.GetInfo1_Contrato: string;
begin
  Result := ParametroString('Info1_Contrato',Modulo);
end;

function TContratos.GetInfo2_Contrato: string;
begin
  Result := ParametroString('Info2_Contrato',Modulo);
end;

function TContratos.GetTermo_Contrato: string;
begin
  Result := ParametroString('Termo_Contrato',Modulo);
end;

procedure TContratos.SetImg_Contrato(const Value: string);
begin
  SetParametroString('Img_Contrato',Modulo,value);
end;

procedure TContratos.SetInfo1_Contrato(const Value: string);
begin
  SetParametroString('Info1_Contrato',modulo,value);
end;

procedure TContratos.SetInfo2_Contrato(const Value: string);
begin
  SetParametroString('Info2_Contrato',modulo,value);
end;

procedure TContratos.SetTermo_Contrato(const Value: string);
begin
  SetParametroString('Termo_Contrato',modulo,value);
end;

{TEtiquetas}

procedure TEtiquetas.SetCabecEtqProduto(const Value: string);
begin
  SetParametroString('CabecEtqProduto',modulo,value);
end;

procedure TEtiquetas.SetInfoEtqProduto(const Value: string);
begin
  SetParametroString('InfoEtqProduto',modulo,value);
end;

function TEtiquetas.GetCabecEtqProduto;
begin
  Result := ParametroString('CabecEtqProduto',Modulo);
end;

function TEtiquetas.GetInfoEtqProduto;
begin
  Result := ParametroString('InfoEtqProduto',Modulo);
end;

{ TOrdemServico }

procedure TOrdemServico.SetCondicoes(const Value: string);
begin
  SetParametroString('OS_Condicoes',modulo,value);
end;

procedure TOrdemServico.SetGarantia(const Value: string);
begin
  SetParametroString('OS_Garantia',modulo,value);
end;

procedure TOrdemServico.SetDiasGarantia(const Value: Smallint);
begin
  SetParametroInteiro('OS_DiasGarantia',modulo,value);
end;

procedure TOrdemServico.SetNumeroInicial(const Value: Integer);
begin
  SetParametroInteiro('OS_NumeroInicio',modulo,value);
end;

function TOrdemServico.GetCondicoes;
begin
  Result := ParametroString('OS_Condicoes',Modulo);
end;

function TOrdemServico.GetGarantia;
begin
  Result := ParametroString('OS_Garantia',Modulo);
end;

function TOrdemServico.GetDiasGarantia;
begin
  Result := ParametroInteiro('OS_DiasGarantia',Modulo);
end;

function TOrdemServico.GetNumeroInicial;
begin
  Result := ParametroInteiro('OS_NumeroInicio',Modulo);
end;

{ TConfigPadrao }

function TConfigPadrao.ParametroFloat(parametro,
  modulo: String): Double;
begin
   with DtmGeral.ZSQL_CONSULTA do begin
    if Active then
      Close;
    SQL.Text := 'SELECT PAR_VALOR FROM PARAMETROS WHERE'+
    ' (PAR_CHAVE = '+ QuotedStr(parametro) + ') AND ((PAR_MODULO IS NULL) OR (PAR_MODULO = '+ QuotedStr(modulo) + '))';
    Open;
    if FieldByName('PAR_VALOR').IsNull then
      Result := 0
    else
      Result := FieldByName('PAR_VALOR').AsFloat;
    Close;
  end;
end;

function TConfigPadrao.ParametroInteiro(parametro,
  modulo: String): Integer;
begin
  with DtmGeral.ZSQL_CONSULTA do begin
    if Active then
      Close;
    SQL.Text := 'SELECT PAR_VALOR FROM PARAMETROS WHERE'+
    ' (PAR_CHAVE = '+ QuotedStr(parametro) + ' ) AND ((PAR_MODULO IS NULL) OR (PAR_MODULO = '+ QuotedStr(modulo) + '))';
    Open;
    if FieldByName('PAR_VALOR').IsNull then
      Result := 0
    else
      Result := FieldByName('PAR_VALOR').AsInteger;
    Close;
  end;
end;

function TConfigPadrao.ParametroString(parametro,
  modulo: String): String;
begin
  with DtmGeral.ZSQL_CONSULTA do begin
    if Active then
      Close;
    SQL.Text := 'SELECT PAR_VALOR FROM PARAMETROS WHERE'+
    ' (PAR_CHAVE = '+ QuotedStr(parametro) + ') AND ((PAR_MODULO IS NULL) OR (PAR_MODULO = '+ QuotedStr(modulo) + '))';
    Open;
    if (IsEmpty) or ( Length(FieldByName('PAR_VALOR').AsString)=0 ) then
      Result := ''
    else
      Result := FieldByName('PAR_VALOR').AsString;

    Close;
  end;
end;

function TConfigPadrao.ParametroChar(parametro, modulo : string) : char;
var
  Resultado : string;
begin
  Resultado := ParametroString(parametro,modulo);
  if Resultado = '' then
    Result := #32
  else
    Result := Resultado[1];
end;

{function TConfigPadrao.ParametroMemo(parametro,modulo: String): String;
begin
  with DtMGeral.ZSQL_CONSULTA do begin
    if Active then
      Close;
    SQL.Text := 'SELECT PGR_VALOR FROM PARAMETROS WHERE'+
    ' PGR_CHAVE='+QuotedStr(parametro)+') AND ((PGR_MODULO IS NULL) OR (PGR_MODULO='+QuotedStr(modulo)+'))';
    Open;
    Result := FieldByName('PGR_VALOR').AsString;
  end;
end;}

function TConfigPadrao.ParametroBoleano(parametro,
  modulo: String): Boolean;
begin
  Result := ParametroString(parametro,modulo) = 'S';
end;

procedure TConfigPadrao.SetParametroBoleano(parametro,
  modulo: String; valor: Boolean);
begin
  inherited;
  SalvarPropriedade(parametro,valor);
end;

procedure TConfigPadrao.SetParametroFloat(parametro,
  modulo: String; valor: Double);
begin
  inherited;
  SalvarPropriedade(parametro,FloatToStr(valor));
end;

procedure TConfigPadrao.SetParametroInteiro(parametro,
  modulo: String; valor: Integer);
begin
  inherited;
  SalvarPropriedade(parametro,IntToStr(valor));
end;

procedure TConfigPadrao.SetParametroString(parametro, modulo,
  valor: String);
begin
  inherited;
  SalvarPropriedade(parametro,valor);
end;

procedure TConfigPadrao.CriarTabelaParametros;
var
  Query : TSQLQuery;
begin
  Query := TSQLQuery.Create(nil);
  try
    with Query do begin
      SQLConnection := DtmGeral.ConexaoBanco;
      SQL.Text := 'CREATE TABLE PARAMETROS( PAR_CHAVE Varchar(15) NOT NULL,'+
      ' PAR_VALOR Varchar(1000), PAR_MODULO Varchar(15), PAR_GRUPO Varchar(20),'+
      ' PAR_OBSERVACAO Varchar(255), PAR_TIPO Char(1)NOT NULL, PAR_TAMMAX'+
      ' Smallint NOT NULL, PAR_INTERVALO Varchar(30), CONSTRAINT PK_PARAMETROS'+
      ' PRIMARY KEY (PAR_CHAVE));';
       ExecSQL(true);
     end;
  finally
    Query.Free;
  end;
end;

procedure TConfigPadrao.SalvarPropriedade(chave: string; valor :boolean);
begin
  SalvarPropriedade(chave,IfThen(valor,'S','F'));
end;

procedure TConfigPadrao.SalvarPropriedade(chave, valor: string);
begin
  with DtmGeral.ZQryParametros do begin
    Params[0].AsString := chave;
    Open;
    if Not IsEmpty then begin
      Edit;
      FieldByName('PAR_VALOR').AsString := valor;
      FieldByName('PAR_MODULO').AsString := Modulo;
      Post;
      DtmGeral.ZConexaoBanco.Disconnect;
      DtmGeral.ZConexaoBanco.Connect;
    end
    else begin
      Append;
      FieldByName('PAR_CHAVE').AsString := chave;
      FieldByName('PAR_VALOR').AsString := valor;
      FieldByName('PAR_MODULO').AsString := Modulo;
      Post;
      Close;
      DtmGeral.ZConexaoBanco.Disconnect;
      DtmGeral.ZConexaoBanco.Connect;
    end;
  end;
end;

procedure TConfigPadrao.SetParametroChar(parametro, modulo: string;
  valor: char);
begin
  SalvarPropriedade(parametro,valor);
end;

end.
